/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.webfis.controller;

import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.webfis.modelos.Servidores;
import br.com.webfis.persistencia.CargoDAO;
import br.com.webfis.persistencia.SecaoDAO;
import br.com.webfis.persistencia.ServidoresDAO;
import java.util.List;

/**
 *
 * @author silvio
 */
@Resource
public class ServidoresController {
    
    private final ServidoresDAO dao;
    private final Result result;
    
    public ServidoresController(ServidoresDAO dao, Result result) {
        this.dao = dao;
        this.result = result;
    }
    
    public void novo(CargoDAO cargos, SecaoDAO secoes){
        this.result.include("cargos",cargos.listaTudo());
        this.result.include("secoes",secoes.listaTudo());
        this.result.of(this).edita(0,cargos,secoes);
    }
    
    @Post("/servidores/")
    public void salva(Servidores servidores){
             
        if(servidores.getIdServidor()== null)
            dao.salvar(servidores); 
        else {
            dao.atualizar(servidores);
        }
        this.result.include("mensagem","Servidor salvo com sucesso!!");
        this.result.redirectTo(this).lista();
    }
    
    @Delete("/servidores/{idItem}")
    public void deleta(Integer idItem){
        Servidores l;
        l = dao.Pesquisar(idItem,"").get(0); 
        dao.deletar(l);
        this.result.include("mensagem","Servidor apagado!!");
        this.result.redirectTo(this).lista();
    }
    
    @Get("/servidores/{idItem}")
    public Servidores edita(Integer idItem, CargoDAO cargos, SecaoDAO secoes){
        Servidores l;
        l = dao.Pesquisar(idItem,"").get(0); 
        this.result.include("cargos",cargos.listaTudo());
        this.result.include("secoes",secoes.listaTudo());
        return l;
    }
    
    
    public List<Servidores> lista(String filtro) { 
        List<Servidores> l;
        
        l = dao.Pesquisar(-1,filtro==null?"":filtro);//dao.listaTudo();
        
        return l;
    }
    
    @Path("/servidores")
    public List<Servidores> lista() { 
        List<Servidores> l;
        
        l = dao.listaTudo();
        
        return l;
    }
    
    public void pesquisa(String filtro) { 
        List<Servidores> l;
        l = dao.Pesquisar(-1,(filtro==null?"":filtro));
        //this.result.forwardTo(this).lista();        
    }
}